/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package produccion;

import java.text.DecimalFormat;
import java.util.ArrayList;

/**
 *
 * @author PRE PRENSA01
 */

public class Libro extends Publicacion implements IDoblado, ICompaginado, IEncolado, IRefilado {
    private boolean solapa;

    public Libro() {
    }

    public Libro( String titulo, String cliente,boolean solapa, Formato formato,Integer tiraje) {
        super(titulo, cliente, formato,tiraje);
        this.solapa = solapa;
    }

    public boolean isSolapa() {
        return solapa;
    }

    public void setSolapa(boolean solapa) {
        this.solapa = solapa;
    }

    @Override
    Double calcularPlacas() {
        Double placasCubierta,placasInteriores=0.0;
        
        placasCubierta = getCubierta().calcularPlacas();
        
        for (InteriorCompaginable i : getInterioresCompaginables()) {
            placasInteriores += i.calcularPlacas();
        }
        
        return placasCubierta + placasInteriores;
    }

    @Override
    Double calcularTiempoImpresion() {
        Double tiempoCubierta,tiempoInteriores=0.0;
        
        tiempoCubierta = getCubierta().calcularTiempoImpresion();
        
        for (int i = 0; i < getInterioresCompaginables().size(); i++) {
            tiempoInteriores += getInterioresCompaginables().get(i).calcularTiempoImpresion();
        }
        
        return tiempoCubierta + tiempoInteriores;
    }

    @Override
    public Double calcularTiempoDoblado() {
        return calcularPliegos() * getTiraje() / 2000;
    }
    
    @Override
    public Double calcularTiempoCompaginado() {
        return calcularPliegos() * getTiraje() / 2000;
    }

    @Override
    public Double calcularTiempoEncolado() {
        return getTiraje() / 200.0;
    }

    @Override
    public Double calcularTiempoRefilado() {
        return getTiraje() / 250.0;
    }
    
    private Double calcularTiempoAcabado(){
        return calcularTiempoDoblado() + calcularTiempoCompaginado() + 
               calcularTiempoEncolado() + calcularTiempoRefilado();
    }
    
    private Double calcularTiempoProduccion(){
        return calcularTiempoImpresion() + calcularTiempoAcabado();
    }
    
    public static void main(String[] args) {
        DecimalFormat df = new DecimalFormat("#.#####");
        
//        Libro l = new Libro("REVISTA INVESTIGACIONES SOCIALES","FAC. SOCIALES",true,Formato.A4,80,500);
//
//        Cubierta c = new Cubierta(TCubierta.COUCHE_BRILLANTE,Color.CUATRO,Color.UNO,
//                new Maquina(NMaquina.ROLAND),new Maquina(NMaquina.ROTAPRINT));
//
//        InteriorCompaginable inte1 = new InteriorCompaginable(312.0, Color.UNO, Color.UNO, new Maquina(NMaquina.ROTAPRINT),new Maquina(NMaquina.ROTAPRINT));
//        InteriorCompaginable inte2 = new InteriorCompaginable(24.0,Color.CUATRO,Color.CUATRO,new Maquina(NMaquina.ROLAND),new Maquina(NMaquina.ROLAND));
//        InteriorCompaginable inte3 = new InteriorCompaginable(16.0,Color.CUATRO,Color.UNO,new Maquina(NMaquina.ROLAND),new Maquina(NMaquina.ROTAPRINT));
        
//        Libro l = new Libro("TEOREMA","MATEMATICA",false,Formato.A4,226,1000);
//        Cubierta c = new Cubierta(TCubierta.COUCHE_BRILLANTE,Color.CUATRO,new Maquina(NMaquina.ROLAND200));
//        
//        InteriorCompaginable inte1 = new InteriorCompaginable(22.5,Color.UNO,Color.UNO,new Maquina(NMaquina.ROTAPRINT),new Maquina(NMaquina.ROTAPRINT));
//        InteriorCompaginable inte2 = new InteriorCompaginable(2.0,Color.CUATRO,Color.CUATRO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        InteriorCompaginable inte3 = new InteriorCompaginable(4.0,Color.CUATRO,Color.UNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROTAPRINT));
//        
//        ArrayList<Interior> inters = new ArrayList<>();
//        inters.add(inte1);
//        inters.add(inte2);
//        inters.add(inte3);        
        
//        Libro l = new Libro("BIOLOGIA","UNMSM",true,Formato.TAMANO_ESPECIAL,336,4000);
//        Cubierta c = new Cubierta(TCubierta.COUCHE_BRILLANTE,Color.CUATRO,new Maquina(NMaquina.ROLAND200));
//        
//        InteriorCompaginable inte1 = new InteriorCompaginable(21.0,Color.CUATRO,Color.CUATRO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        //Interior inte2 = new InteriorCompaginable(2.0,Color.CUATRO,Color.CUATRO,new Maquina(NMaquina.ROLAND),new Maquina(NMaquina.ROLAND));
//        //Interior inte3 = new InteriorCompaginable(4.0,Color.CUATRO,Color.UNO,new Maquina(NMaquina.ROLAND),new Maquina(NMaquina.ROTAPRINT));
//        
//        ArrayList<InteriorCompaginable> inters = new ArrayList<>(); 
//        inters.add(inte1);
//        //inters.add(inte2);
//        //inters.add(inte3);
        
//        Libro l = new Libro("RAZONAMIENTO MATEMATICO","UNMSM",true,Formato.A4,520,4000);
//        Cubierta c = new Cubierta(TCubierta.COUCHE_BRILLANTE,Color.CUATRO,new Maquina(NMaquina.ROLAND200));
//        
//        InteriorCompaginable inte1 = new InteriorCompaginable(65.0,Color.UNO,Color.UNO,new Maquina(NMaquina.ROTAPRINT),new Maquina(NMaquina.ROTAPRINT));
//        //Interior inte2 = new InteriorCompaginable(2.0,Color.CUATRO,Color.CUATRO,new Maquina(NMaquina.ROLAND),new Maquina(NMaquina.ROLAND));
//        //Interior inte3 = new InteriorCompaginable(4.0,Color.CUATRO,Color.UNO,new Maquina(NMaquina.ROLAND),new Maquina(NMaquina.ROTAPRINT));
//        
//        ArrayList<InteriorCompaginable> inters = new ArrayList<>(); 
//        inters.add(inte1);
//        //inters.add(inte2);
//        //inters.add(inte3);
        
                
//        Libro l = new Libro("PROSPECTO","UNMSM",true,Formato.A5,24,250);
//        Cubierta c = new Cubierta(TCubierta.COUCHE_BRILLANTE,Color.CUATRO,new Maquina(NMaquina.ROLAND200));
//        
//        InteriorCompaginable inte1 = new InteriorCompaginable(1.5,Color.UNO,Color.UNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        //Interior inte2 = new InteriorCompaginable(2.0,Color.CUATRO,Color.CUATRO,new Maquina(NMaquina.ROLAND),new Maquina(NMaquina.ROLAND));
//        //Interior inte3 = new InteriorCompaginable(4.0,Color.CUATRO,Color.UNO,new Maquina(NMaquina.ROLAND),new Maquina(NMaquina.ROTAPRINT));
//        
//        ArrayList<Interior> inters = new ArrayList<>();
//        inters.add(inte1);
//        //inters.add(inte2);
//        //inters.add(inte3);
          
//        Libro l = new Libro("BLOCK SISTEMAS","UNMSM",true,Formato.A5,24,500);
//        Cubierta c = new Cubierta(TCubierta.COUCHE_BRILLANTE,Color.CUATRO,new Maquina(NMaquina.ROLAND300));
//        
//        InteriorCompaginable inte1 = new InteriorCompaginable(3.0,Color.UNO,Color.UNO,new Maquina(NMaquina.DAVIDSON),new Maquina(NMaquina.DAVIDSON));
//        //Interior inte2 = new InteriorCompaginable(2.0,Color.CUATRO,Color.CUATRO,new Maquina(NMaquina.ROLAND),new Maquina(NMaquina.ROLAND));
//        //Interior inte3 = new InteriorCompaginable(4.0,Color.CUATRO,Color.UNO,new Maquina(NMaquina.ROLAND),new Maquina(NMaquina.ROTAPRINT));
//        
//        ArrayList<Interior> inters = new ArrayList<>();
//        inters.add(inte1);
//        //inters.add(inte2);
//        //inters.add(inte3);
        
//        Libro l = new Libro("BIOLOGIA","UNMSM",true,Formato.TAMANO_ESPECIAL,336,4000);
//        Cubierta c = new Cubierta(TCubierta.COUCHE_BRILLANTE,Color.CUATRO,new Maquina(NMaquina.ROLAND200));
//        
//        InteriorCompaginable inte1 = new InteriorCompaginable(6.25,Color.UNO,Color.UNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        InteriorCompaginable inte2 = new InteriorCompaginable(2.0,Color.CUATRO,Color.CUATRO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        InteriorCompaginable inte3 = new InteriorCompaginable(4.0,Color.CUATRO,Color.UNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROTAPRINT));
//        
//        ArrayList<Interior> inters = new ArrayList<>();
//        inters.add(inte1);
//        inters.add(inte2);
//        inters.add(inte3);
        

        
//        Libro l = new Libro("SCANNING","UNMSM",true,Formato.A5,500,4000);
//        Cubierta c = new Cubierta(TCubierta.COUCHE_BRILLANTE,Color.CUATRO,new Maquina(NMaquina.ROLAND200));
//        
//        InteriorCompaginable inte1 = new InteriorCompaginable(6.25,Color.UNO,Color.UNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        //Interior inte2 = new InteriorCompaginable(2.0,Color.CUATRO,Color.CUATRO,new Maquina(NMaquina.ROLAND),new Maquina(NMaquina.ROLAND));
//        //Interior inte3 = new InteriorCompaginable(4.0,Color.CUATRO,Color.UNO,new Maquina(NMaquina.ROLAND),new Maquina(NMaquina.ROTAPRINT));
//        
//        ArrayList<InteriorCompaginable> inters = new ArrayList<>();
//        inters.add(inte1);
//        //inters.add(inte2);
//        //inters.add(inte3);        
        
        
//        Libro l = new Libro("SOBRE MANILA","UNMSM",true,Formato.A5,0,30000);
//        Cubierta c = new Cubierta(TCubierta.COUCHE_BRILLANTE,Color.CUATRO,new Maquina(NMaquina.ROLAND200));
//        
//        //Interior inte1 = new InteriorCompaginable(6.25,Color.UNO,Color.UNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        //Interior inte2 = new InteriorCompaginable(2.0,Color.CUATRO,Color.CUATRO,new Maquina(NMaquina.ROLAND),new Maquina(NMaquina.ROLAND));
//        //Interior inte3 = new InteriorCompaginable(4.0,Color.CUATRO,Color.UNO,new Maquina(NMaquina.ROLAND),new Maquina(NMaquina.ROTAPRINT));
//        
//        ArrayList<Interior> inters = new ArrayList<>();
//        //inters.add(inte1);
//        //inters.add(inte2);
//        //inters.add(inte3);
        
//        Libro l = new Libro("QUIPUCAMAYOC","UNMSM",true,Formato.A4,216,500);
//        Cubierta c = new Cubierta(TCubierta.COUCHE_BRILLANTE,Color.CUATRO,new Maquina(NMaquina.ROLAND200));
//        
//        InteriorCompaginable inte1 = new InteriorCompaginable(4.0,Color.CUATRO,Color.UNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        InteriorCompaginable inte2 = new InteriorCompaginable(11.5,Color.UNO,Color.UNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        
//        ArrayList<InteriorCompaginable> inters = new ArrayList<>();
//        inters.add(inte1);
//        inters.add(inte2);
//        //inters.add(inte3);     
        
//        Libro l = new Libro("Plan Estrategico","UNMSM",true,Formato.A4,36,1000);
//        Cubierta c = new Cubierta(TCubierta.COUCHE_BRILLANTE,Color.CUATRO,Color.CUATRO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        
//        InteriorCompaginable inte1 = new InteriorCompaginable(4.5,Color.CUATRO,Color.CUATRO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        //Interior inte2 = new InteriorCompaginable(11.5,Color.UNO,Color.UNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        //Interior inte3 = new InteriorCompaginable(4.0,Color.CUATRO,Color.UNO,new Maquina(NMaquina.ROLAND),new Maquina(NMaquina.ROTAPRINT));
//        
//        ArrayList<Interior> inters = new ArrayList<>();
//        inters.add(inte1);
//        //inters.add(inte2);
//        //inters.add(inte3);         
        
//        Libro l = new Libro("Julio Leon","UNMSM",true,Formato.TAMANO_ESPECIAL,440,1000);
//        Cubierta c = new Cubierta(TCubierta.COUCHE_BRILLANTE,Color.CUATRO,new Maquina(NMaquina.ROLAND200));
//        
//        InteriorCompaginable inte1 = new InteriorCompaginable(27.5,Color.UNO,Color.UNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        //Interior inte2 = new InteriorCompaginable(11.5,Color.UNO,Color.UNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        //Interior inte3 = new InteriorCompaginable(4.0,Color.CUATRO,Color.UNO,new Maquina(NMaquina.ROLAND),new Maquina(NMaquina.ROTAPRINT));
//        
//        ArrayList<Interior> inters = new ArrayList<>();
//        inters.add(inte1);
//        //inters.add(inte2);
//        //inters.add(inte3); 
        
        
//        Libro l = new Libro("*****","UNMSM",true,Formato.A4,220,500);
//        Cubierta c = new Cubierta(TCubierta.COUCHE_BRILLANTE,Color.CUATRO,Color.UNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        
//        InteriorCompaginable inte1 = new InteriorCompaginable(28.25,Color.UNO,Color.UNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        //Interior inte2 = new InteriorCompaginable(11.5,Color.UNO,Color.UNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        //Interior inte3 = new InteriorCompaginable(4.0,Color.CUATRO,Color.UNO,new Maquina(NMaquina.ROLAND),new Maquina(NMaquina.ROTAPRINT));
//        
//        ArrayList<Interior> inters = new ArrayList<>();
//        inters.add(inte1);
//        //inters.add(inte2);
//        //inters.add(inte3);
        
//        Libro l = new Libro("Elementos de fisica","CEPRE-UNMSM",true,Formato.A5,232,2000);
//        Cubierta c = new Cubierta(TCubierta.COUCHE_BRILLANTE,Color.CUATRO,Color.NINGUNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        
//        InteriorCompaginable inte1 = new InteriorCompaginable(29.0,Color.UNO,Color.UNO,new Maquina(NMaquina.ROTAPRINT),new Maquina(NMaquina.ROTAPRINT));
//        //Interior inte2 = new InteriorCompaginable(11.5,Color.UNO,Color.UNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        //Interior inte3 = new InteriorCompaginable(4.0,Color.CUATRO,Color.UNO,new Maquina(NMaquina.ROLAND),new Maquina(NMaquina.ROTAPRINT));
//        
//        ArrayList<InteriorCompaginable> inters = new ArrayList<>();
//        inters.add(inte1);
//        //inters.add(inte2);
//        //inters.add(inte3);        
        
        
//        Libro l = new Libro("sociologia","UNMSM",true,Formato.A5,496,500);
//        Cubierta c = new Cubierta(TCubierta.COUCHE_BRILLANTE,Color.CUATRO,Color.NINGUNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        
//        InteriorCompaginable inte1 = new InteriorCompaginable(31.0,Color.UNO,Color.UNO,new Maquina(NMaquina.ROTAPRINT),new Maquina(NMaquina.ROTAPRINT));
//        //Interior inte2 = new InteriorCompaginable(11.5,Color.UNO,Color.UNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        //Interior inte3 = new InteriorCompaginable(4.0,Color.CUATRO,Color.UNO,new Maquina(NMaquina.ROLAND),new Maquina(NMaquina.ROTAPRINT));
//        
//        ArrayList<InteriorCompaginable> inters = new ArrayList<InteriorCompaginable>();
//        inters.add(inte1);
//        //inters.add(inte2);
//        //inters.add(inte3);
        
        
//        Libro l = new Libro("valuacion de bonos","UNMSM",true,Formato.A5,496,500);
//        Cubierta c = new Cubierta(TCubierta.COUCHE_BRILLANTE,Color.CUATRO,Color.NINGUNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        
//        InteriorCompaginable inte1 = new InteriorCompaginable(31.0,Color.UNO,Color.UNO,new Maquina(NMaquina.ROTAPRINT),new Maquina(NMaquina.ROTAPRINT));
//        //Interior inte2 = new InteriorCompaginable(11.5,Color.UNO,Color.UNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        //Interior inte3 = new InteriorCompaginable(4.0,Color.CUATRO,Color.UNO,new Maquina(NMaquina.ROLAND),new Maquina(NMaquina.ROTAPRINT));
//        
//        ArrayList<InteriorCompaginable> inters = new ArrayList<InteriorCompaginable>();
//        inters.add(inte1);
//        //inters.add(inte2);
//        //inters.add(inte3);
        
        
//        Libro l = new Libro("BUTACA","UNMSM",true,Formato.A4,76,500);
//        Cubierta c = new Cubierta(TCubierta.COUCHE_BRILLANTE,Color.CUATRO,Color.NINGUNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        
//        InteriorCompaginable inte1 = new InteriorCompaginable(19.0,Color.UNO,Color.UNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        //Interior inte2 = new InteriorCompaginable(11.5,Color.UNO,Color.UNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        //Interior inte3 = new InteriorCompaginable(4.0,Color.CUATRO,Color.UNO,new Maquina(NMaquina.ROLAND),new Maquina(NMaquina.ROTAPRINT));
//        
//        ArrayList<InteriorCompaginable> inters = new ArrayList<InteriorCompaginable>();
//        inters.add(inte1);
//        //inters.add(inte2);
//        //inters.add(inte3);
        
        
        
//        Libro l = new Libro("Compendio Estadistico","UNMSM",true,Formato.A4,430,200);
//        Cubierta c = new Cubierta(TCubierta.COUCHE_MATE,Color.CUATRO,new Maquina(NMaquina.ROLAND200));
//        
//        InteriorCompaginable inte1 = new InteriorCompaginable(45.9,Color.UNO,Color.UNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        InteriorCompaginable inte2 = new InteriorCompaginable(8.1,Color.CUATRO,Color.CUATRO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        //Interior inte3 = new InteriorCompaginable(4.0,Color.CUATRO,Color.UNO,new Maquina(NMaquina.ROLAND),new Maquina(NMaquina.ROTAPRINT));
//        
//        ArrayList<InteriorCompaginable> inters = new ArrayList<>();
//        inters.add(inte1);
//        inters.add(inte2);
//        //inters.add(inte3);  
        
//        Libro l = new Libro("Revista industrial data","UNMSM",true,Formato.A4,150,250);
//        Cubierta c = new Cubierta(TCubierta.COUCHE_MATE,Color.CUATRO,Color.NINGUNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        
//        InteriorCompaginable inte1 = new InteriorCompaginable(18.75,Color.UNO,Color.UNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        //Interior inte2 = new InteriorCompaginable(11.5,Color.UNO,Color.UNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        //Interior inte3 = new InteriorCompaginable(4.0,Color.CUATRO,Color.UNO,new Maquina(NMaquina.ROLAND),new Maquina(NMaquina.ROTAPRINT));
//        
//        ArrayList<InteriorCompaginable> inters = new ArrayList<InteriorCompaginable>();
//        inters.add(inte1);
//        //inters.add(inte2);
//        //inters.add(inte3);  
        
//        Libro l = new Libro("Pensamiento Critico","Instituto de Investigación",true,Formato.A5,164,265);
//        Cubierta c = new Cubierta(TCubierta.COUCHE_BRILLANTE,Color.CUATRO,Color.NINGUNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        
//        InteriorCompaginable inte1 = new InteriorCompaginable(10.25,Color.UNO,Color.UNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        //Interior inte2 = new InteriorCompaginable(11.5,Color.UNO,Color.UNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        //Interior inte3 = new InteriorCompaginable(4.0,Color.CUATRO,Color.UNO,new Maquina(NMaquina.ROLAND),new Maquina(NMaquina.ROTAPRINT));
//        
//        ArrayList<InteriorCompaginable> inters = new ArrayList<InteriorCompaginable>();
//        inters.add(inte1);
//        //inters.add(inte2);
//        //inters.add(inte3);
        
        
//        Libro l = new Libro("Algorithmic vol 5 n°1","Facultad de Ingenieria de Sistemas, Instituto de Investigación",false,Formato.A4,100,250);
//        Cubierta c = new Cubierta(TCubierta.COUCHE_BRILLANTE,Color.CUATRO,Color.NINGUNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        
//        InteriorCompaginable inte1 = new InteriorCompaginable(12.5,Color.UNO,Color.UNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        //Interior inte2 = new InteriorCompaginable(11.5,Color.UNO,Color.UNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        //Interior inte3 = new InteriorCompaginable(4.0,Color.CUATRO,Color.UNO,new Maquina(NMaquina.ROLAND),new Maquina(NMaquina.ROTAPRINT));
//        
//        ArrayList<InteriorCompaginable> inters = new ArrayList<InteriorCompaginable>();
//        inters.add(inte1);
//        //inters.add(inte2);
//        //inters.add(inte3);
        
//        Libro l = new Libro("Plan Estrategico","Facultad de Educación, Oficina de Calidad Academica y Acreditacion",false,Formato.A4,56,5000);
//        Cubierta c = new Cubierta(TCubierta.COUCHE_MATE,Color.CUATRO,Color.CUATRO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        
//        InteriorCompaginable inte1 = new InteriorCompaginable(12.5,Color.CUATRO,Color.CUATRO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        //Interior inte2 = new InteriorCompaginable(11.5,Color.UNO,Color.UNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        //Interior inte3 = new InteriorCompaginable(4.0,Color.CUATRO,Color.UNO,new Maquina(NMaquina.ROLAND),new Maquina(NMaquina.ROTAPRINT));
//        
//        ArrayList<InteriorCompaginable> inters = new ArrayList<InteriorCompaginable>();
//        inters.add(inte1);
//        //inters.add(inte2);
//        //inters.add(inte3);
        
//        //Formato 17x24
//        Libro l = new Libro("Fundamentos de Fisica","PRE UNMSM",false,Formato.A5,232,2000);
//        Cubierta c = new Cubierta(TCubierta.COUCHE_MATE,Color.CUATRO,Color.NINGUNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        
//        InteriorCompaginable inte1 = new InteriorCompaginable(14.5,Color.UNO,Color.UNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        //Interior inte2 = new InteriorCompaginable(11.5,Color.UNO,Color.UNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        //Interior inte3 = new InteriorCompaginable(4.0,Color.CUATRO,Color.UNO,new Maquina(NMaquina.ROLAND),new Maquina(NMaquina.ROTAPRINT));
//        
//        ArrayList<InteriorCompaginable> inters = new ArrayList<InteriorCompaginable>();
//        inters.add(inte1);
//        //inters.add(inte2);
//        //inters.add(inte3);
        
//        //Formato 17x24
//        Libro l = new Libro("Impacto de las crisis internacionales","Cesar Franco",false,Formato.A5,300,1000);
//        Cubierta c = new Cubierta(TCubierta.COUCHE_MATE,Color.CUATRO,Color.NINGUNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        
//        InteriorCompaginable inte1 = new InteriorCompaginable(18.75,Color.UNO,Color.UNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        //Interior inte2 = new InteriorCompaginable(11.5,Color.UNO,Color.UNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        //Interior inte3 = new InteriorCompaginable(4.0,Color.CUATRO,Color.UNO,new Maquina(NMaquina.ROLAND),new Maquina(NMaquina.ROTAPRINT));
//        
//        ArrayList<InteriorCompaginable> inters = new ArrayList<InteriorCompaginable>();
//        inters.add(inte1);
//        //inters.add(inte2);
//        //inters.add(inte3);
        
//        Libro l = new Libro("El Perú de los últimos 50 años","Fac Sociales",true,Formato.A5,350,1000);
//        Cubierta c = new Cubierta(TCubierta.COUCHE_BRILLANTE,Color.CUATRO,Color.NINGUNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        
//        InteriorCompaginable inte1 = new InteriorCompaginable(21.875,Color.UNO,Color.UNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        //Interior inte2 = new InteriorCompaginable(11.5,Color.UNO,Color.UNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        //Interior inte3 = new InteriorCompaginable(4.0,Color.CUATRO,Color.UNO,new Maquina(NMaquina.ROLAND),new Maquina(NMaquina.ROTAPRINT));
//        
//        ArrayList<InteriorCompaginable> inters = new ArrayList<InteriorCompaginable>();
//        inters.add(inte1);
//        //inters.add(inte2);
//        //inters.add(inte3);
        
//        Libro l = new Libro("Manual credito latinoamericano de referencia","Of. Cooperacion y RI",true,Formato.A5,32,500);
//        Cubierta c = new Cubierta(TCubierta.COUCHE_BRILLANTE,Color.CUATRO,Color.NINGUNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        
//        InteriorCompaginable inte1 = new InteriorCompaginable(2.0,Color.DOS,Color.DOS,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        //Interior inte2 = new InteriorCompaginable(11.5,Color.UNO,Color.UNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        //Interior inte3 = new InteriorCompaginable(4.0,Color.CUATRO,Color.UNO,new Maquina(NMaquina.ROLAND),new Maquina(NMaquina.ROTAPRINT));
        
        //caso especial: retira sin color en el caso de compaginables se cosiderará el 
        //doble de paginas para poder sacar la cantidad exacta de pliegos
        Libro l = new Libro("Legajo de Personal","Rectorado-Of de recursos humanos",true,Formato.A4,1000);
        Cubierta c = new Cubierta(TCubierta.COUCHE_BRILLANTE,Color.UNO,Color.NINGUNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
        
        InteriorCompaginable inte1 = new InteriorCompaginable(2.5,Color.UNO,Color.NINGUNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
        //Interior inte2 = new InteriorCompaginable(11.5,Color.UNO,Color.UNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
        //Interior inte3 = new InteriorCompaginable(4.0,Color.CUATRO,Color.UNO,new Maquina(NMaquina.ROLAND),new Maquina(NMaquina.ROTAPRINT));   
        
//        //caso especial un interior que es indice y otro interior que son hojas 
//        //iguales como un block (comaginable y no compaginable a la vez)
//        //cubierta es en carton, no impresa
//        Libro l = new Libro("Libro de Registro","UNTECS",true,Formato.A3,100,6);
//        Cubierta c = new Cubierta(TCubierta.COUCHE_BRILLANTE,Color.UNO,Color.NINGUNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        
//        InteriorCompaginable inte1 = new InteriorCompaginable(2.5,Color.UNO,Color.NINGUNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        //Interior inte2 = new InteriorCompaginable(11.5,Color.UNO,Color.UNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        //Interior inte3 = new InteriorCompaginable(4.0,Color.CUATRO,Color.UNO,new Maquina(NMaquina.ROLAND),new Maquina(NMaquina.ROTAPRINT));  
          
          
//        Libro l = new Libro("Libro de Registro","UNTECS",true,Formato.A3,100,6);
//        Cubierta c = new Cubierta(TCubierta.COUCHE_BRILLANTE,Color.UNO,Color.NINGUNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        
//        InteriorCompaginable inte1 = new InteriorCompaginable(2.5,Color.UNO,Color.NINGUNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        //Interior inte2 = new InteriorCompaginable(11.5,Color.UNO,Color.UNO,new Maquina(NMaquina.ROLAND200),new Maquina(NMaquina.ROLAND200));
//        //Interior inte3 = new InteriorCompaginable(4.0,Color.CUATRO,Color.UNO,new Maquina(NMaquina.ROLAND),new Maquina(NMaquina.ROTAPRINT));         
        
        ArrayList<InteriorCompaginable> inters = new ArrayList<InteriorCompaginable>();
        inters.add(inte1);
        //inters.add(inte2);
        //inters.add(inte3);
        
        c.setPub(l);
        l.setCubierta(c);
        
        inte1.setPub(l);
        //inte2.setPub(l);
        //inte3.setPub(l);
        l.setInterioresCompaginables(inters);
        
        System.out.println("Titulo: " + l.getTitulo());
        System.out.println("=====================CUBIERTA====================");
        System.out.println("placas tira: " + df.format(l.getCubierta().calcularPlacasTira()));
        System.out.println("placas retira: " + df.format(l.getCubierta().calcularPlacasRetira()));
        System.out.println("placas totales: " + df.format(l.getCubierta().calcularPlacas()));
        System.out.println("tiempo tira: " + df.format(l.getCubierta().calcularTiempoImpresionTira()));
        System.out.println("tiempo retira: " + df.format(l.getCubierta().calcularTiempoImpresionRetira()));
        System.out.println("tiempo muerto impresion: " + df.format(l.getCubierta().calcularTiempoMuerto()));
        System.out.println("tiempo registro: " + df.format(3.0));
        System.out.println("TIEMPO TOTAL CUBIERTA: " + df.format(l.getCubierta().calcularTiempoImpresion() + 3.0));
        
        System.out.println("=====================INTERIORES====================");
        for (int i = 0; i < inters.size(); i++) {
            System.out.println("<<<<<Interior: " + (i+1) + ">>>>>");
            System.out.println("pliegos: " + df.format(l.getInterioresCompaginables().get(i).getNumPliegos()));
            System.out.println("placas tira: " + df.format(l.getInterioresCompaginables().get(i).calcularPlacasTira()));
            System.out.println("placas retira: " + df.format(l.getInterioresCompaginables().get(i).calcularPlacasRetira()));
            System.out.println("placas totales: " + df.format(l.getInterioresCompaginables().get(i).calcularPlacas()));
            System.out.println("tiempo tira: " + df.format(l.getInterioresCompaginables().get(i).calcularTiempoImpresionTira()));
            System.out.println("tiempo retira: " + df.format(l.getInterioresCompaginables().get(i).calcularTiempoImpresionRetira()));
            System.out.println("tiempo muerto: " + df.format(l.getInterioresCompaginables().get(i).calcularTiempoMuerto()));
            System.out.println("TIEMPO TOTAL INTERIOR "+ (i+1)+ ": " + df.format(l.getInterioresCompaginables().get(i).calcularTiempoImpresion()));
            System.out.println("");
        }

        System.out.println("=====================LIBRO=========================");
        System.out.println("=====Impresión=====");
        System.out.println("Pliegos totales: " + df.format(l.calcularPliegos()));
        System.out.println("Placas totales (interiores): " + df.format(l.calcularPlacas()));
        System.out.println("Tiempo impresion libro: " + df.format(l.calcularTiempoImpresion() + 3.0));
        System.out.println("======Doblado======");
        System.out.println("Tiempo doblado: " + df.format(l.calcularTiempoDoblado()));
        System.out.println("====Compaginado====");
        System.out.println("Tiempo Compaginado: " + df.format(l.calcularTiempoCompaginado()));
        System.out.println("======Encolado=====");
        System.out.println("Tiempo encolado: " + df.format(l.calcularTiempoEncolado()));
        System.out.println("======Refilado=====");
        System.out.println("Tiempo refilado: " + df.format(l.calcularTiempoRefilado()));
        
        
        System.out.println("Tiempo Acabados total: " + df.format(l.calcularTiempoAcabado()));
        
        System.out.println("Tiempo Producción total libro: " + df.format(l.calcularTiempoProduccion()));
    }
}
